#pragma once

#include "../umlmodel_global.h"

#include "MessageEnd.h"
#include "OccurrenceSpecification.h"

namespace uml {

/// <summary>
/// MessageOccurrenceSpecification
/// A MessageOccurrenceSpecification specifies the occurrence of Message events,
/// such as sending and receiving of Signals or invoking or receiving of Operation
/// calls. A MessageOccurrenceSpecification is a kind of MessageEnd. Messages are
/// generated either by synchronous Operation calls or asynchronous Signal sends.
/// They are received by the execution of corresponding AcceptEventActions.
/// </summary>
class UMLMODEL_EXPORT MessageOccurrenceSpecification : public MessageEnd, public OccurrenceSpecification {

public: // Constructors and destructors
    explicit MessageOccurrenceSpecification(const QString& umlType="uml::MessageOccurrenceSpecification");

public: // JsonSerializable override
    void fromJson(const QJsonObject& json, QStringList& errorList) override;
    void toJson(QJsonObject& json) override;

};

} // namespace uml
